package com.meituan.sdk.model.ddzhkh.finance.financeDndeductDetail;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;
import javax.validation.constraints.NotEmpty;

/**
* 滚动账期-查询账期调整明细
* This file was automatically generated.
*/
@ApiMeta(
    path = "/ddzhkh/finance/dnDeduct/detail",
    businessId = 59,
    apiVersion = "10009",
    apiName = "finance_dndeduct_detail",
    needAuth = true
)
public class FinanceDndeductDetailRequest implements MeituanRequest<List<OpenDeductDetailDTO>> {
    /**
    * <p data-diff-id="ct-diff-id-186fbbb1-fe6b-4418-aaff-a56af1fa9803">1：团购</p>
    */
    @NotNull(message = "productCode不能为空")
    @SerializedName("productCode")
    private Integer productCode;
    /**
    * <p data-diff-id="ct-diff-id-76312c88-1a2b-4b4a-a516-6253510a8b35">页码，从1 开始</p>
    */
    @NotNull(message = "pageNo不能为空")
    @SerializedName("pageNo")
    private Integer pageNo;
    /**
    * <p data-diff-id="ct-diff-id-161c5e63-b4be-4128-a469-6d1b87fd5285">每页记录数</p>
    */
    @NotNull(message = "limit不能为空")
    @SerializedName("limit")
    private Integer limit;
    /**
    * <p data-diff-id="ct-diff-id-b548d846-1e98-4985-8926-4a6efbc30f32">结算开始时间（<span style="color: rgb(31, 45, 61)">毫秒维度时间戳</span>）</p>
    */
    @NotNull(message = "beginTime不能为空")
    @SerializedName("beginTime")
    private Long beginTime;
    /**
    * <p data-diff-id="ct-diff-id-15729d5a-43a1-49ae-858e-1f75ae462b53">结算结束时间（<span style="color: rgb(31, 45, 61)">毫秒维度时间戳</span>）</p>
    */
    @NotNull(message = "endTime不能为空")
    @SerializedName("endTime")
    private Long endTime;
    /**
    * <p data-diff-id="ct-diff-id-24935bec-0e7a-49d9-9e7f-6c1056851482">查询的门店信息</p>
    */
    @NotEmpty(message = "opPoiIds不能为空")
    @SerializedName("opPoiIds")
    private List<String> opPoiIds;
    /**
    * <p data-diff-id="ct-diff-id-7e2f79cf-d3f1-45c7-a783-e75c857c2ad7">是否查询总店，true :包含总店   false：不包含总店</p>
    */
    @SerializedName("queryGeneralShop")
    private Boolean queryGeneralShop;

    public Integer getProductCode() {
        return productCode;
    }
    public void setProductCode(Integer productCode) {
        this.productCode = productCode;
    }
    public Integer getPageNo() {
        return pageNo;
    }
    public void setPageNo(Integer pageNo) {
        this.pageNo = pageNo;
    }
    public Integer getLimit() {
        return limit;
    }
    public void setLimit(Integer limit) {
        this.limit = limit;
    }
    public Long getBeginTime() {
        return beginTime;
    }
    public void setBeginTime(Long beginTime) {
        this.beginTime = beginTime;
    }
    public Long getEndTime() {
        return endTime;
    }
    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }
    public List<String> getOpPoiIds() {
        return opPoiIds;
    }
    public void setOpPoiIds(List<String> opPoiIds) {
        this.opPoiIds = opPoiIds;
    }
    public Boolean getQueryGeneralShop() {
        return queryGeneralShop;
    }
    public void setQueryGeneralShop(Boolean queryGeneralShop) {
        this.queryGeneralShop = queryGeneralShop;
    }


    @Override
    public MeituanResponse<List<OpenDeductDetailDTO>> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<List<OpenDeductDetailDTO>>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "FinanceDndeductDetailRequest{" + "productCode=" + productCode + "," + "pageNo=" + pageNo + "," + "limit=" + limit + "," + "beginTime=" + beginTime + "," + "endTime=" + endTime + "," + "opPoiIds=" + opPoiIds + "," + "queryGeneralShop=" + queryGeneralShop + "}";
    }
}
